Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.10.2013, 09:32
Аспирант
Отправить личное сообщение для pashin76 Посмотреть профиль Найти все сообщения от pashin76
 
Регистрация: 03.10.2009
Сообщений: 57

Не работает AJAX если есть перевод строки
Добрый день!

Столкнулся с проблемой:
Если в textarea (name=text) содержится текст, в котором есть автоматический перевод на новую строку, который появился из-за того, что не хватило ширины поля ввода, то AJAX запрос не уходит на сервер.
Если перевод строки сделать путем нажатия на enter? все работает.

Подскажите в чем ошибка и как исправить.
Заранее спасибо.

$.ajax(
    {
    type: "POST",
 	data: "name=" + $("#name").val() + "&email=" + $("#email").val()
    	+ "&text=" + $("#text").val(),
    url: "/sendmail.php",
    success: function(data)
        {
        alert("Ваше сообщение отправлено на ящик - " + data);
        document.getElementById("parent_popup").style.display="none";
        $("#text").val("");
        }
    });
Ответить с цитированием
  #2 (permalink)  
Старый 01.10.2013, 10:18
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Очень сомнительно. Браузер какой? Версия? Демонстрация?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 01.10.2013, 11:08
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

$.ajax({
    type: "POST",
    data: {
        name: $("#name").val(),
        email: $("#email").val(),
        text: $("#text").val()
    },
    url: "/sendmail.php",
    success: function (data) {
        alert("Ваше сообщение отправлено на ящик - " + data);
        $("#parent_popup").hide();
        $("#text").val("");
    }
});
Ответить с цитированием
  #4 (permalink)  
Старый 01.10.2013, 12:14
Аспирант
Отправить личное сообщение для pashin76 Посмотреть профиль Найти все сообщения от pashin76
 
Регистрация: 03.10.2009
Сообщений: 57

Сообщение от keen Посмотреть сообщение
$.ajax({
    type: "POST",
    data: {
        name: $("#name").val(),
        email: $("#email").val(),
        text: $("#text").val()
    },
    url: "/sendmail.php",
    success: function (data) {
        alert("Ваше сообщение отправлено на ящик - " + data);
        $("#parent_popup").hide();
        $("#text").val("");
    }
});
К сожалению, так тоже не работает
Ответить с цитированием
  #5 (permalink)  
Старый 01.10.2013, 12:22
Аспирант
Отправить личное сообщение для pashin76 Посмотреть профиль Найти все сообщения от pashin76
 
Регистрация: 03.10.2009
Сообщений: 57

Сообщение от danik.js Посмотреть сообщение
Очень сомнительно. Браузер какой? Версия? Демонстрация?
Браузер хром29 и IE10

Демонстрация:
http://otvod.net/board/-1,83996
Внизу объявления нажать на конвертик, откроется форма обратной связи.

Текст, который не отправляется:
"Добрый день!
Убедительная просьба, при размещении объявлений, указывать реальное название организации."
Ответить с цитированием
  #6 (permalink)  
Старый 01.10.2013, 12:42
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

JS тут не причем. Запрос успешно отправляется на сервер. Но серверный скрипт почему то выдает 404 Not found.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 01.10.2013, 15:14
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

pashin76, открываем скрипт- видим:
$.ajax(
    {
    type: "POST",
    data: {
        name: $("#name").val(),
        email: $("#email").val(),
        text: $("#text").val(),
        mail: $("#mail").val(),
        board: $("#board").val(),
        mes_id: $("#mes_id").val(),
        email_id: $("#email_id").val()
	    },
    url: "/sendmail.php",
    success: function(data)
        {
        alert("Ваше сообщение отправлено на ящик - " + data);
        $("#parent_popup").hide();
        $("#text").val("");
        }
    });
}

отправляя форму аяксом желательно через form.serialize() либо FormData()
http://jquery-docs.ru/ajax/serialize/ , а не перечислением всех полей

Для serialize:
var form=$('#formreg');
 $.ajax({
  url: form.attr('action'),
  dataType: "html",
  type: "POST",
  data: form.serialize(),
	    },
    url: "/sendmail.php",
    success: function(data)
        {
        alert("Ваше сообщение отправлено на ящик - " + data);
        $("#parent_popup").hide();
        $("#text").val("");
        }
    });
}

Кстать для кодировок windows-1251 - есть проблемы с кодингом/декодингом на серве отправляемой формы, если текст с кирилицей
Значит без геморроя - форму нун отправлять через FormData() - Ищите в инете

Последний раз редактировалось Deff, 01.10.2013 в 23:17.
Ответить с цитированием
  #8 (permalink)  
Старый 01.10.2013, 16:27
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от Deff
Кстать для кодировок windows-1251 - есть проблемы с кодингом/декодингом на серве отправляемой формы, если текст с кирилицей
Значит без геморроя - форму нун отправлять через FormData() - Ищите в инете
c формдатой и кодировками будет та же фигня - оно так же принудительно кодирует в utf8.

так что на сервере в любом случае надо декодировать из utf8 в строку.
Ответить с цитированием
  #9 (permalink)  
Старый 01.10.2013, 18:24
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Яростный Меч
c формдатой и кодировками будет та же фигня - оно так же принудительно кодирует в utf8.
Тут сам процесс кодирования jQuery иной для .serialize() на windows-1251

Есть неполный вариант перекодирования => http://jqbook.net.ru/ajax/ajax_win1251.htm
Думаю что с FormData() - траблов быть не должно, посколь перекодирует сам браузер в нужном формате страницы, (а не jQuery) формы же отправляются нормально...
На худой конец отправлять форму через фрейм

Последний раз редактировалось Deff, 01.10.2013 в 18:28.
Ответить с цитированием
  #10 (permalink)  
Старый 01.10.2013, 18:37
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от Deff
Думаю что с FormData() - траблов быть не должно, посколь перекодирует сам браузер в нужном формате страницы, (а не jQuery)
да, перекодирует браузер, но всегда в utf8, даже если кодировка страницы win1251 (в отличии от сабмита формы)

т.е. в отличии от encodeURIComponent, тут нельзя что-то поменять.


а проблемы особой нет, во всех бэкендах можно указать, в какой кодировке пришли данные (и как из байтов получить строку). имхо, это правильнее, чем хитрить с encodeURIComponent как в примере по ссылке.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает фотогалерея которая использует AJAX trim Ваши сайты и скрипты 0 20.12.2012 21:58
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11
Не работает пример использования AJAX nuker AJAX и COMET 4 19.03.2009 18:31
Проблема onmouseout если есть вложенные теги... AlexPa Общие вопросы Javascript 5 27.01.2009 19:59
Prototype + Ajax - не работает в IE, FF. silvek Prototype & script.aculo.us 0 30.08.2008 16:06